#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

#define NUM_ENTRADAS 31
#define MAX_EPOCAS 10000

#define NUM_PADROES 6
#define NUM_PADROES_DISTORCIDOS 60

//#define NEURONIOS 2
//#define CAMADA_SAIDA 1

typedef struct entrada{
    int xs[NUM_ENTRADAS];
}enter, *ENTER, **P_ENTER;

typedef struct pesos{
    float xs[NUM_ENTRADAS];
}pesos, *PESOS, **P_PESOS;

enter padroes[NUM_PADROES];
enter padroes_distorcidos[NUM_PADROES_DISTORCIDOS];
int respostas_padroes[NUM_PADROES][NUM_PADROES];

void on_start();

void cria_entrada_zerada_ponteiro(P_PESOS entrada);
void cria_entrada_aleatoria_ponteiro(P_PESOS entrada);
void treinar(enter *entrada, P_PESOS pesados, int num_neuronios, int num_padroes);
//void regra_treinamento(P_ENTER entrada, P_PESOS pesados, int num_neuronios, int num_padroes, int **desejada);

PESOS cria_entrada_zerada();
PESOS cria_entrada_aleatoria();

int regra_delta(PESOS pesados, ENTER entrada);


